{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Digital Clustering Based on K-means\n",
    "> 手写实现k-means聚类算法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import time\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 导入手写体数据\n",
    "from sklearn.datasets import load_digits"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.数据理解"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['DESCR', 'data', 'feature_names', 'frame', 'images', 'target', 'target_names']"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "raw_data = load_digits()\n",
    "dir(raw_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "数据形状为== (1797, 64)\n",
      "目标值为== [0 1 2 ... 8 9 8]\n"
     ]
    }
   ],
   "source": [
    "data = raw_data.data\n",
    "target = raw_data.target\n",
    "\n",
    "print(\"数据形状为==\", data.shape)\n",
    "print(\"目标值为==\", target)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.打乱数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "random_list = list(range(data.shape[0]))\n",
    "np.random.shuffle(random_list)\n",
    "# 打乱训练数据和目标数据\n",
    "data = data[random_list, :]\n",
    "target = target[random_list]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.k-means算法的参数项"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 聚类中心数\n",
    "num_clusters = 10\n",
    "# 随机去10个数据点作为初始中心点\n",
    "cluster_centers = np.zeros((num_clusters, data.shape[1]))\n",
    "cluster_centers = data[:num_clusters, :]\n",
    "# k-means算法的迭代次数\n",
    "num_iters = 10\n",
    "# 初始化一个数组，存放每次迭代的损失值\n",
    "losses = np.zeros(num_iters)\n",
    "# 初始化一个数组，存放每条数据与每个聚类中心的距离\n",
    "dist = np.zeros((data.shape[0], num_clusters))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4.k-means算法的核心代码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Time used for k-means clustering => 0.1638803482055664 seconds.\n"
     ]
    }
   ],
   "source": [
    "start_time = time.time()\n",
    "\n",
    "for i in range(num_iters):\n",
    "    # 计算每条数据与每个聚类中心的距离，X**2 表示返回x的2次幂\n",
    "    for j in range(data.shape[0]):\n",
    "        dist[j, :] = np.sqrt(np.sum((data[j, :] - cluster_centers) ** 2, axis=1 ))\n",
    "    # 计算本次迭代的损失值\n",
    "    losses[i] = np.mean(np.min(dist, axis=1))\n",
    "    # 计算离每条数据最近的聚类中心编号\n",
    "    cluster_ids = np.argmin(dist, axis=1)\n",
    "    # 更新聚类中心\n",
    "    for k in range(num_clusters):\n",
    "        d = data[cluster_ids == k, :]\n",
    "        cluster_centers[k, :] = np.mean(d, axis=0)\n",
    "\n",
    "end_time = time.time()\n",
    "print(\"Time used for k-means clustering =>\", end_time - start_time , \"seconds.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.画出损失函数收敛曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "plt.plot(range(num_iters), losses, \"o-\", lw=3)\n",
    "plt.grid(True)\n",
    "plt.title(\"k-means\")\n",
    "plt.xlabel(\"iteration number\")\n",
    "plt.ylabel(\"objective loss\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6.绘制聚类中心"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAECCAYAAADXWsr9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAMOElEQVR4nO3d7Ytc5R3G8evqJqLrU7SxKq5oxRIIQhORUIlIqyYkVaxoEQWFSEt80YpSQbRvqv9AsC+KEKJWiDEYNVBCa32KSKBVkxirZmMxQXGNGh+JMdC4ya8v5qSkSdo9G89972x+3w8MOzs7M9e9u1xzzpk559yOCAE4un1nogcAoDyKDiRA0YEEKDqQAEUHEqDoQAJ9UXTbC2y/bfsd23cXznrI9g7bb5bMOSDvbNtrbQ/bfsv27YXzjrX9iu3Xm7z7SuY1mQO2X7O9pnRWk/eu7Tdsb7K9vnDWNNtP2N7S/A8vLpg1o/md9l922r6jkyePiAm9SBqQtFXSeZKOkfS6pJkF8y6VdKGkNyv9fmdKurC5fqKkfxb+/SzphOb6VEkvS/pR4d/xN5JWSFpT6W/6rqTplbIekfTL5voxkqZVyh2Q9JGkc7p4vn5Yos+R9E5EbIuIPZJWSvpZqbCIeEnS56We/zB5H0bExub6V5KGJZ1VMC8iYlfz7dTmUmyvKNtDkq6UtKxUxkSxfZJ6C4YHJSki9kTEl5XiL5e0NSLe6+LJ+qHoZ0l6/4DvR1SwCBPJ9rmSZqu3lC2ZM2B7k6Qdkp6NiJJ590u6S9K+ghkHC0nP2N5ge3HBnPMkfSLp4WbTZJnt4wvmHegGSY919WT9UHQf5rajbr9c2ydIelLSHRGxs2RWROyNiFmShiTNsX1BiRzbV0naEREbSjz//zE3Ii6UtFDSr2xfWihninqbeQ9ExGxJX0sq+h6SJNk+RtLVklZ19Zz9UPQRSWcf8P2QpO0TNJYibE9Vr+SPRsRTtXKb1cwXJS0oFDFX0tW231Vvk+sy28sLZf1HRGxvvu6QtFq9zb8SRiSNHLBG9IR6xS9toaSNEfFxV0/YD0V/VdIPbH+/eSW7QdKfJnhMnbFt9bbxhiNiSYW802xPa64fJ+kKSVtKZEXEPRExFBHnqvd/eyEibiqRtZ/t422fuP+6pPmSinyCEhEfSXrf9ozmpsslbS6RdZAb1eFqu9RbNZlQETFq+9eS/qreO40PRcRbpfJsPybpx5Km2x6R9LuIeLBUnnpLvZslvdFsN0vSbyPiz4XyzpT0iO0B9V7IH4+IKh97VXK6pNW9109NkbQiIp4umHebpEebhdA2SbcUzJLtQUnzJN3a6fM2b+UDOIr1w6o7gMIoOpAARQcSoOhAAhQdSKCvil54d8YJyyKPvInO66uiS6r5x6z6jyOPvInM67eiAyigyA4zttkLp0NnnHHGuB+ze/duDQ4OHlHeKaecMu7HfPHFF0f0OEnaunXruB+zd+9eDQwMHFHenj17juhxk0VEHHKg2ITvAjsZTZlS98+2aNGiqnnXX3991bxrr722at5773VyiHdr/bD3KavuQAIUHUiAogMJUHQgAYoOJEDRgQQoOpAARQcSaFX0mlMmAejemEVvTjL4B/VOQTtT0o22Z5YeGIDutFmiV50yCUD32hQ9zZRJwNGqzdEZraZMag6Ur33MLoAW2hS91ZRJEbFU0lKJw1SBftNm1f2onjIJyGDMJXrtKZMAdK/VGRSaecJKzRUGoDD2jAMSoOhAAhQdSICiAwlQdCABig4kQNGBBCg6kAAztRyBWbNmVc278847q+atXLmyat4333xTNe/kk0+umrdr165qWaOjo4e9nSU6kABFBxKg6EACFB1IgKIDCVB0IAGKDiRA0YEEKDqQAEUHEmgzJdNDtnfYfrPGgAB0r80S/Y+SFhQeB4CCxix6RLwk6fMKYwFQCNvoQAKdHabK3GtA/+qs6My9BvQvVt2BBNp8vPaYpL9JmmF7xPYvyg8LQJfaTLJ4Y42BACiHVXcgAYoOJEDRgQQoOpAARQcSoOhAAhQdSICiAwk4ovvd0mvv6z44OFgzTqtWraqaN3369Kp59957b9W8U089tWre9u3bq+atW7euWtbo6Kj27dvng29niQ4kQNGBBCg6kABFBxKg6EACFB1IgKIDCVB0IAGKDiRA0YEE2pwc8mzba20P237L9u01BgagO23O6z4q6c6I2Gj7REkbbD8bEZsLjw1AR9rMvfZhRGxsrn8laVjSWaUHBqA749pGt32upNmSXi4xGABltJ6SyfYJkp6UdEdE7DzMz5l7DehTrYpue6p6JX80Ip463H2Yew3oX23edbekByUNR8SS8kMC0LU22+hzJd0s6TLbm5rLTwuPC0CH2sy9tk7SIaemATB5sGcckABFBxKg6EACFB1IgKIDCVB0IAGKDiRA0YEEWh/U0s/mz59fNW/BggVV82699daqeTNnzqyaN2/evKp5a9asqZq3du3aqnmHwxIdSICiAwlQdCABig4kQNGBBCg6kABFBxKg6EACFB1IgKIDCbQ5C+yxtl+x/Xoz99p9NQYGoDtt9nX/l6TLImJXc373dbb/EhF/Lzw2AB1pcxbYkLSr+XZqc2GCBmASabWNbnvA9iZJOyQ9GxHMvQZMIq2KHhF7I2KWpCFJc2xfcPB9bC+2vd72+q4HCeDbGde77hHxpaQXJR1yQHZELI2IiyLioo7GBqAjbd51P832tOb6cZKukLSl9MAAdKfNu+5nSnrE9oB6LwyPR0TdU3QA+FbavOv+D0mzK4wFQCHsGQckQNGBBCg6kABFBxKg6EACFB1IgKIDCVB0IIGjYu61hQsXVs2zXTVv7ty5VfMuueSSqnlDQ0NV81asWFE1rx+wRAcSoOhAAhQdSICiAwlQdCABig4kQNGBBCg6kABFBxKg6EACrYveTOLwmm1ODAlMMuNZot8uabjUQACU03ZKpiFJV0paVnY4AEpou0S/X9JdkvYVHAuAQtrM1HKVpB0RsWGM+zH3GtCn2izR50q62va7klZKusz28oPvxNxrQP8as+gRcU9EDEXEuZJukPRCRNxUfGQAOsPn6EAC4zqVVES8qN60yQAmEZboQAIUHUiAogMJUHQgAYoOJEDRgQQoOpAARQcSKDb3Ws35yTZv3lwtS5JeffXVqnlz5sypmnf++edXzXvuueeq5j3//PNV8/oBS3QgAYoOJEDRgQQoOpAARQcSoOhAAhQdSICiAwlQdCABig4k0GoX2OZUz19J2itplFM6A5PLePZ1/0lEfFpsJACKYdUdSKBt0UPSM7Y32F5cckAAutd21X1uRGy3/T1Jz9reEhEvHXiH5gWAFwGgD7VaokfE9ubrDkmrJR1ygDRzrwH9q81sqsfbPnH/dUnzJb1ZemAAutNm1f10SaubM8ZMkbQiIp4uOioAnRqz6BGxTdIPK4wFQCF8vAYkQNGBBCg6kABFBxKg6EACFB1IgKIDCVB0IIFic6/VtHz58qp569atq5p3zTXXVM0bGhqqmrdkyZKqeR988EHVvH7AEh1IgKIDCVB0IAGKDiRA0YEEKDqQAEUHEqDoQAIUHUiAogMJtCq67Wm2n7C9xfaw7YtLDwxAd9ru6/57SU9HxM9tHyNpsOCYAHRszKLbPknSpZIWSVJE7JG0p+ywAHSpzar7eZI+kfSw7ddsL2smcvgvthfbXm97feejBPCttCn6FEkXSnogImZL+lrS3QffiSmZgP7VpugjkkYi4uXm+yfUKz6ASWLMokfER5Letz2juelySZuLjgpAp9q+636bpEebd9y3Sbql3JAAdK1V0SNikyS2vYFJij3jgAQoOpAARQcSoOhAAhQdSICiAwlQdCABig4kUGzutYgo9dSH+Oyzz6plSdLOnTur5l133XVV80ZGRqrmDQ8PV83LiCU6kABFBxKg6EACFB1IgKIDCVB0IAGKDiRA0YEEKDqQwJhFtz3D9qYDLjtt31FjcAC6MeYusBHxtqRZkmR7QNIHklYXHheADo131f1ySVsj4r0SgwFQxniLfoOkx0oMBEA5rYvenNP9akmr/sfPmXsN6FPjOUx1oaSNEfHx4X4YEUslLZUk2/WOUQUwpvGsut8oVtuBSalV0W0PSpon6amywwFQQtspmXZL+m7hsQAohD3jgAQoOpAARQcSoOhAAhQdSICiAwlQdCABig4kQNGBBFxijjTbn0g6kmPWp0v6tOPh9EMWeeTVyjsnIk47+MYiRT9SttdHxEVHWxZ55E10HqvuQAIUHUig34q+9CjNIo+8Cc3rq210AGX02xIdQAEUHUiAogMJUHQgAYoOJPBvEqmawYgg5qgAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAECCAYAAADXWsr9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAMXUlEQVR4nO3dW4hd5RnG8ecxmZCDh2BjJBjRKiUgQo1EbQhI6wmtYm8qRFGotFhExdCCaG+K14LoRRFC1Aqe0NGAkcYqGJVCq83JRk0sjkScRo1jEDURxZm3F3ulpHF01iTr+2Zn3v8PNtkzs2c/7yR59lp7z1r7c0QIwPR21FQPAKA8ig4kQNGBBCg6kABFBxKg6EACfVF025faftv2O7ZvL5z1gO3dtt8omXNA3sm2N9jebvtN27cWzptt+zXbrzd5d5bMazJn2N5i+9nSWU3eTtvbbG+1vbFw1nzbg7Z3NP+GywtmLWl+pv2Xz2yv6uTOI2JKL5JmSBqSdJqkWZJel3RGwbzzJZ0t6Y1KP98iSWc314+R9O/CP58lHd1cH5D0qqSfFP4ZfyfpUUnPVvo73SlpQaWshyT9prk+S9L8SrkzJH0o6ZQu7q8ftujnSnonIt6NiK8lPS7pF6XCIuIVSXtK3f84eR9ExObm+ueStks6qWBeRMQXzYcDzaXYUVG2F0u6XNKaUhlTxfax6m0Y7pekiPg6Ij6tFH+hpKGIeK+LO+uHop8k6f0DPh5WwSJMJdunSlqq3la2ZM4M21sl7Zb0QkSUzLtH0m2SxgpmHCwkPW97k+0bCuacJuljSQ82T03W2J5XMO9AKyU91tWd9UPRPc7npt1xubaPlvSUpFUR8VnJrIgYjYizJC2WdK7tM0vk2L5C0u6I2FTi/r/Hiog4W9Jlkm6yfX6hnJnqPc27LyKWStorqehrSJJke5akKyU92dV99kPRhyWdfMDHiyXtmqJZirA9oF7JH4mIp2vlNruZL0m6tFDECklX2t6p3lOuC2w/XCjrfyJiV/Pnbklr1Xv6V8KwpOED9ogG1St+aZdJ2hwRH3V1h/1Q9H9K+pHtHzaPZCslPTPFM3XGttV7jrc9Iu6ukHeC7fnN9TmSLpK0o0RWRNwREYsj4lT1/t1ejIhrS2TtZ3ue7WP2X5d0iaQiv0GJiA8lvW97SfOpCyW9VSLrIFerw912qbdrMqUi4hvbN0v6q3qvND4QEW+WyrP9mKSfSlpge1jSHyPi/lJ56m31rpO0rXneLEl/iIi/FMpbJOkh2zPUeyB/IiKq/NqrkhMlre09fmqmpEcj4rmCebdIeqTZCL0r6fqCWbI9V9LFkn7b6f02L+UDmMb6YdcdQGEUHUiAogMJUHQgAYoOJNBXRS98OOOUZZFH3lTn9VXRJdX8y6z6D0ceeVOZ129FB1BAkQNmbFc9Cqc5SmpSIuKQvk+SFi1aNOnv2bt3r+bNO7QTnxYuXDjp7xkZGdGCBQsOKW90dHTS37Nnzx4df/zxh5T30UeTP6T7yy+/1Jw5cw4pb2RkZNLfczj/X8bGap7YJ0XEtwad8kNguzAwMFA176abbqqad+ONN1bN27t3b9W8u+66q2remjV1T53ft29f1bzxsOsOJEDRgQQoOpAARQcSoOhAAhQdSICiAwlQdCCBVkWvuWQSgO5NWPTmTQb/pN5b0J4h6WrbZ5QeDEB32mzRqy6ZBKB7bYqeZskkYLpqc1JLqyWTmhPla5+zC6CFNkVvtWRSRKyWtFqqf5oqgO/XZtd9Wi+ZBGQw4Ra99pJJALrX6o0nmnXCSq0VBqAwjowDEqDoQAIUHUiAogMJUHQgAYoOJEDRgQQoOpDAtFiSacWKFTXjtG7duqp5zzxT94jjQ1kC6nAcd9xxVfOuuuqqqnm7dn3r1JCixluSiS06kABFBxKg6EACFB1IgKIDCVB0IAGKDiRA0YEEKDqQAEUHEmizJNMDtnfbfqPGQAC612aL/mdJlxaeA0BBExY9Il6RtKfCLAAK4Tk6kECr93Vvg7XXgP7VWdFZew3oX+y6Awm0+fXaY5L+LmmJ7WHbvy4/FoAutVlk8eoagwAoh113IAGKDiRA0YEEKDqQAEUHEqDoQAIUHUiAogMJdHas+1QqsX7c91m7dm3VvMHBwap511xzTdW82bNnV80bGxurmtcP2KIDCVB0IAGKDiRA0YEEKDqQAEUHEqDoQAIUHUiAogMJUHQggTZvDnmy7Q22t9t+0/atNQYD0J02x7p/I+n3EbHZ9jGSNtl+ISLeKjwbgI60WXvtg4jY3Fz/XNJ2SSeVHgxAdyb1HN32qZKWSnq1xDAAymh9mqrtoyU9JWlVRHw2ztdZew3oU62KbntAvZI/EhFPj3cb1l4D+lebV90t6X5J2yPi7vIjAeham+foKyRdJ+kC21uby88LzwWgQ23WXvubJFeYBUAhHBkHJEDRgQQoOpAARQcSoOhAAhQdSICiAwlQdCCBabH22tDQUNW8bdu2Vc1btWpV1bzzzjuvat6GDRuq5s2cOS3+208KW3QgAYoOJEDRgQQoOpAARQcSoOhAAhQdSICiAwlQdCABig4k0OZdYGfbfs32683aa3fWGAxAd9oc9PuVpAsi4ovm/d3/Znt9RPyj8GwAOtLmXWBD0hfNhwPNhQUagCNIq+fotmfY3ippt6QXIoK114AjSKuiR8RoRJwlabGkc22fefBtbN9ge6PtjV0PCeDwTOpV94j4VNJLki4d52urI2JZRCzraDYAHWnzqvsJtuc31+dIukjSjtKDAehOm1fdF0l6yPYM9R4YnoiIZ8uOBaBLbV51/5ekpRVmAVAIR8YBCVB0IAGKDiRA0YEEKDqQAEUHEqDoQAIUHUhgWixCNTIyUjVv3bp1VfM++eSTqnk7d+6smrd8+fKqeaeffnrVvOHh4ap542GLDiRA0YEEKDqQAEUHEqDoQAIUHUiAogMJUHQgAYoOJEDRgQRaF71ZxGGLbd4YEjjCTGaLfquk7aUGAVBO2yWZFku6XNKasuMAKKHtFv0eSbdJGis4C4BC2qzUcoWk3RGxaYLbsfYa0KfabNFXSLrS9k5Jj0u6wPbDB9+ItdeA/jVh0SPijohYHBGnSlop6cWIuLb4ZAA6w+/RgQQm9VZSEfGSessmAziCsEUHEqDoQAIUHUiAogMJUHQgAYoOJEDRgQQoOpDAtFh77aij6j5ejY6OVs1bv3591bwtW7ZUzVu2rO7pEeecc07VvJdffrlq3njYogMJUHQgAYoOJEDRgQQoOpAARQcSoOhAAhQdSICiAwlQdCCBVofANm/1/LmkUUnf8JbOwJFlMse6/ywiRopNAqAYdt2BBNoWPSQ9b3uT7RtKDgSge2133VdExC7bCyW9YHtHRLxy4A2aBwAeBIA+1GqLHhG7mj93S1or6dxxbsPaa0CfarOa6jzbx+y/LukSSW+UHgxAd9rsup8oaa3t/bd/NCKeKzoVgE5NWPSIeFfSjyvMAqAQfr0GJEDRgQQoOpAARQcSoOhAAhQdSICiAwlQdCCBabH22ty5c6vm3XzzzVXzhoaGqubNmjWrat7ChQur5n311VdV82quDTg2Njb+DNUmADBlKDqQAEUHEqDoQAIUHUiAogMJUHQgAYoOJEDRgQQoOpBAq6Lbnm970PYO29ttLy89GIDutD3W/V5Jz0XEL23PklT34HIAh2XCots+VtL5kn4lSRHxtaSvy44FoEttdt1Pk/SxpAdtb7G9plnI4f/YvsH2RtsbO58SwGFpU/SZks6WdF9ELJW0V9LtB9+IJZmA/tWm6MOShiPi1ebjQfWKD+AIMWHRI+JDSe/bXtJ86kJJbxWdCkCn2r7qfoukR5pX3N+VdH25kQB0rVXRI2KrJJ57A0cojowDEqDoQAIUHUiAogMJUHQgAYoOJEDRgQQoOpDAtFh7bd++fVXzvmt9q1LuvffeqnkDAwNV8wYHB6vmrV+/vmqe7ap542GLDiRA0YEEKDqQAEUHEqDoQAIUHUiAogMJUHQgAYoOJDBh0W0vsb31gMtntlfVGA5ANyY8BDYi3pZ0liTZniHpP5LWFp4LQIcmu+t+oaShiHivxDAAyphs0VdKeqzEIADKaV305j3dr5T05Hd8nbXXgD41mdNUL5O0OSI+Gu+LEbFa0mpJsh0dzAagI5PZdb9a7LYDR6RWRbc9V9LFkp4uOw6AEtouybRP0g8KzwKgEI6MAxKg6EACFB1IgKIDCVB0IAGKDiRA0YEEKDqQAEUHEnBE9+ef2P5Y0qGcs75A0kjH4/RDFnnk1co7JSJOOPiTRYp+qGxvjIhl0y2LPPKmOo9ddyABig4k0G9FXz1Ns8gjb0rz+uo5OoAy+m2LDqAAig4kQNGBBCg6kABFBxL4L69nsHjCfXDtAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "for i in range(num_clusters):\n",
    "    plt.figure()\n",
    "    plt.gray()\n",
    "    plt.matshow(cluster_centers[i].reshape(8, 8))\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
